package com.ruoyi.info.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.ruoyi.info.domain.FhInfoEquip;
import com.ruoyi.info.mapper.FhInfoEquipMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 装备管理Service业务层处理
 *
 *
 * @author zcc
 */
@Service
public class FhInfoEquipService {
    @Autowired
    private FhInfoEquipMapper fhInfoEquipMapper;

    @Autowired
    private RestTemplate restTemplate;

    //多条件查询装备列表
    public List<FhInfoEquip> selectByEntity(FhInfoEquip fhInfoEquip){
        return   fhInfoEquipMapper.selectByEntity(fhInfoEquip);
    }

    /**
     * 查询装备管理
     *
     * @param equipId 装备管理主键
     * @return 装备管理
     */
    public FhInfoEquip selectByEquipId(Long equipId) {
        return fhInfoEquipMapper.selectByEquipId(equipId);
    }

    /**
     * 查询装备管理列表
     *
     * @param query 查询条件
     * @param page 分页条件
     * @return 装备管理
     */
    public List<FhInfoEquip> selectList(FhInfoEquip query, Pageable page) {
        if (page != null) {
            PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
        }
        QueryWrapper<FhInfoEquip> qw = new QueryWrapper<>();
//        qw.eq("del_flag",0);
        Long categoryId = query.getCategoryId();
        if (categoryId != null) {
            qw.eq("category_id", categoryId);
        }
        String nameLike = query.getName();
        if (!StringUtils.isEmpty(nameLike)) {
            qw.like("name", nameLike);
        }
        String detail = query.getDetail();
        if (!StringUtils.isEmpty(detail)) {
            qw.eq("detail", detail);
        }
        return fhInfoEquipMapper.selectList(qw);
    }

    /**
     * 新增装备管理
     *
     * @param fhInfoEquip 装备管理
     * @return 结果
     */
    public int insert(FhInfoEquip fhInfoEquip) {
//        fhInfoEquip.setDelFlag(0);
        fhInfoEquip.setCreateTime(LocalDateTime.now());
        return fhInfoEquipMapper.insert(fhInfoEquip);
    }

    /**
     * 修改装备管理
     *
     * @param fhInfoEquip 装备管理
     * @return 结果
     */
    public int update(FhInfoEquip fhInfoEquip) {
        return fhInfoEquipMapper.updateEquipById(fhInfoEquip);
    }

    /**
     * 批量删除装备管理
     *
     * @param equipIds 需要删除的装备管理主键
     * @return 结果
     */
    public int deleteByEquipIds(Long[] equipIds) {
        return fhInfoEquipMapper.updateDelFlagByIds(equipIds);
    }

    /**
     * 删除装备管理信息
     *
     * @param equipId 装备管理主键
     * @return 结果
     */
    public int deleteByEquipId(Long equipId) {
        Long[] equipIds = {equipId};
        return fhInfoEquipMapper.updateDelFlagByIds(equipIds);
    }

    public List<FhInfoEquip> selectListByIdList(Long[] idList) {
        return fhInfoEquipMapper.selectListByIdList(idList);
    }

    /**
     * 获取AI推荐的装备图片列表
     */
    public List<String> getRecommendedEquipImages(String equipType) {
        // 调用AI服务获取推荐图片列表
        // 示例URL: http://ai-service-url/recommend?equipType=轮子
        String url = "http://ai-service-url/recommend?equipType=" + equipType;
        ResponseEntity<List> response = restTemplate.getForEntity(url, List.class);
        return response.getBody();
    }

    /**
     * 分析装备图片，获取装备信息
     */
    public Map<String, String> analyzeEquipImage(byte[] imagePath, String equipType) {
        // 构建请求体
        MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
        body.add("imagePath", imagePath);
        body.add("equipType", equipType);

        // 设置请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);

        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);

        // 调用AI服务分析图片
        // 示例URL: http://ai-service-url/analyze
        String url = "http://ai-service-url/analyze";
        ResponseEntity<Map> response = restTemplate.postForEntity(url, requestEntity, Map.class);
        return response.getBody();
    }

}
